This page last changed on Mar 31, 2009 by tm.

Debian 4.0 (Etch) Install


  • Warning: 5GB harddisk will run out of space if config'd during debian install for separate /home partition when building linux kernel to config the serial port.     
  • Debian install time: ~45 min depending on harddisk format time and machine speed
    1. Burn DVD with Debian 4.0 r7 net install and boot internet connected PC from DVD
      1. Hostname:   mvc-debian4
      2. Domain: shore.mbari.org
      3. Partitioning: Guided - use entire disk.    Either "all files in one partion' (or 'separate /home partition).   This creates ext3 file system in the partitions.
      4. users:  auv (for development) and dorado1 (for runtime)
      5. Use network mirror for complete package list (if internet connected)
      6. Software install: For embedded Linux machine Standard (only), For desktop development Standard+Desktop
      7. Install Grub to the master boot record
    2. Remove DVD and allow boot from harddisk
    3. Standard installs require additional debian packages, these are installed by running the script included in auv-pkgs/debian-pkg directory.   Login as root and type: source /home/dorado1/prj/auv-pkgs/debian-pkg/deb-packages
    4. Java Installation
      1. Create a java installation specific to the auv-linux and auv-autonomy development and decouple from the debian system java:
        1. Install in a named directory in opt, example: /opt/jdk_1.6u12.  
        2. Download jdk to /home/dorado1/tools/java
        3. login as root and enter root password.
        4. Change directory to /opt. Type: cd /opt
          cp /home/dorado1/tools/java/jdk-6u12-linux.i586.bin .
        5. Change the permission of the bin file to be executable. Type:
          chmod a+x jdk-6u12-linux-i586.bin
        6. Verify that you have permission to execute the file. Type:
          ls -l
        7. Start the installation process.Type:      ./jdk-6u12-linux-i586.bin
        8. Press the spacebar to display the next page. At the end, enter yes. For this procedure the jdk is installed in the /opt/jdk1.6.0_12 directory. When the installation has completed, you will see the word Done.
        9. exit from root back to user dorado1
        10. In the dorado1 user profile, set the java environment variable to /opt/jdk_1.6u12

AUV-Linux Install and Setup

  1. Setup the auv-linux development environment (build and install auv-pkgs (1.5hrs), auv-shared and auv-linux) 
    • as user 'auv' or 'dorado1' create the 'prj' directory. mkdir /home/auv/prj.   cd /home/auv/prj
    • export CVSROOT=':pserver:tm@moonjelly.shore.mbari.org:/home/cvs'
    • cvs login
    • cvs checkout auv-pkgs
    • cvs checkout auv-shared
    • cvs checkout auv-linux
    • cd /home/auv/prj/auv-pkgs
    • edit 'set-auv-env' and make appropriate edits to match the install directory (ex. /home/dorado1/prj)
    • source set-auv-env (or ". set-auv-env")
    • edit /home/auv/.bash_profile, add source /home/auv/prj/auv-pkgs/set-auv-env for persistance
    • setup, build and install auv-pkgs
      • su root
      • cd $AUV_PKGS
      • . 1_omniORB.bat
      • . 2_omniNotify.bat
      • . 3_gctpc.bat
      • . 4_apr.bat
      • . 5_apr-util.bat
      • . 6_log4cxx.bat
      • . 7_netcdb.bat
      • . 8_newmat.bat
      • . 9_cppunit.bat
      • . final.bat   (changes owner ship of prj directory to 'auv'
    • As root, add auv startup script to /etc/init.d:   /etc/init.d/auv-startup.sh
      • #!/bin/sh
        # auv startup script
      •  
      • # initialize Posix mqueue infrastructure
        mkdir /dev/mqueue
        mount -t mqueue none /dev/mqueue
      • chmod 777 /dev/mqueue
    • chmod a+x auv-startup.sh 
    • Then (as root) update the startup sequence: update-rc.d -f auv-startup.sh start 80 2 3 4 5 .
      • #** Note to remove: update-rc.d S80auv-startup.sh remove
      • to disable the script - rename S80auv-startup.sh to K80auv-startup.sh.     read the README in /etc/rcS.d/README
    • exit back to user 'auv'
    • build auv-shared
      • in auv-shared/utility/Makefile - change  LIBPATH to: LIBPATH     = $AUV_PKGS/omniORB/build/lib/
      • apt-get install xutils-dev to get gccmakedep
    • build auv-linux
      • edit taskIF Makefile - comment out idlj and javac lines
    • Run supervisor (this creates logs/latest link)
      • from auv-linux/onboard, run
        • supervisor -proc sampleConfig/simprocesses.cfg -plan sampleConfig/simWaypoint.cfg


 

Autonomy Software checkout:

cd /home/dorado1/prj 

svn co svn+ssh://kahuna.shore.mbari.org/svn/repos/TREX/trunk TREX 

copy Europa from threadfish (Yikes! NASA version is moving ahead of TREX)

Build failed (jam in TREX) due to missing boost regex loadable module.    To resolve this, a debian package was installed (developer version) which is a bit of a sledge hammer.   Need to determine of this is a standard component of the OS or a developer package specific to TREX (judged it to be an OS component)

apt-get install libboost-regex-dev

Build failed due to libSystem.so missing

Fix:  add $PLASMA_HOME/lib to LD_LIBRARY_PATH

  1. Rebuilding the linux kernel to enable the serial drivers on the Xtreme PC104 serial card (start 3:45
    • Note: Procedure for Xtreme 104 12 port serial card is at http://www.connecttech.com/ftp/installguides/s_install_EC-LN26.htm 
    • logged in as root
    • cp serial.conf /etc 
    • cd /usr/src
    • tar jxf linux-source-2.6.18.tar.bz2
    • cd linux-source-2.6.18
    • make clean && make mrproper
    • uname -r to get /boot/config-'uname -r' name
    • cp /boot/config-2.6.18-6-686 ./.config    (copy the previous kernel config)
    • make menuconfig
      • Go to Load an Alternate Configuration File (page down) and choose .config (which contains the configuration of your current working kernel)
      • Device Drivers  --> Character devices
      • deselect (no *) the 'Non-standard serial port support (config: CONFIG_SERIAL
        menuconfig: (Character Devices -> Standard/generic (dumb) serial support)
      • config: SERIAL_8250
        menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> 8250/16550 and compatible serial support)
      • config: CONFIG_SERIAL_8250_EXTENDED
        menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Extended 8250/16550 serial driver options)
      • config: CONFIG_SERIAL_8250_MANY_PORTS
        menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Support more than 4 legacy serial ports)
      • config: CONFIG_SERIAL_8250_SHARE_IRQ
        menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Support for sharing serial interrupts)
      • I also enabled Number of 8250/16550 serial ports to register at runtime to be 12 (was 4), this was not in manufacturers instructions.
    • make-kpkg clean
    • fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers    (note the space after custom (your string) and kernel_image)
      • After the append to version, you can write any string (replace custom with your string).  Restrictions are all lower case and must not contain whitespace or special chars (dash ok).
    • dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
      dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
    • Optional: Remove (comment out) the unwanted kernel from /boot/grub/menu.lst.     The board will boot the newly built kernel so no action required.
    • serial.conf was editted to change IRQ from 10 to 9 as there was a PC104 reconfig at some point.
    • To finish workstation setup (if you want to run debian as a workstation with DHCP and seen on MBARI network do the following:
      •  First, see if your host name is set correclty using the following commands:
          uname -n
          hostname -a
          hostname -s
          hostname -d
          hostname -f
          hostname
      •  
      • edit /etc/network/interfaces.    Add the line 'hostname mvc-debian4.shore.mbari.org' under iface eth0 inet dhcp
        • iface eth0 inet dhcp
              hostname mybox.mydomain.com
        • In /etc/dhcp3/dhclient.conf, uncomment and edit  #send host-name "andare.fugue.com";
    • To auto start omniNames and omniNotify services at bootup:
      • create a file called 'startCorba.sh'
        • #!/bin/bash
          # Start CORBA (omniORB and omniNotify) services - name service and notification service.
        • #  . /etc/init.d/functions
          export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):/usr/local/lib
          export OMNIORB_HOME=/home/auv/prj/auv-pkgs/omniORB
          export OMNIORB_CONFIG=$OMNIORB_HOME/omniORB.cfg
          export OMNINAMES_LOGDIR=$OMNIORB_HOME/nameServiceLog
          export OMNINOTIFY_DIR=/home/auv/prj/auv-pkgs/omniNotify
        • # Start name service
          echo "Start name service"
          /usr/local/bin/omniNames &
        • # Start notification service
          echo "Start notification service"
          /usr/local/bin/notifd -c $OMNINOTIFY_DIR/channel.cfg &
      • make sure startCorba has execute permissions (chmod a+x startCorba.sh) 
      • Create a symbolic link using update-rc.d (Debian command) 
        • mvc-debian4:/etc/init.d# update-rc.d startCorba defaults
           Adding system startup for /etc/init.d/startCorba ...
             /etc/rc0.d/K20startCorba -> ../init.d/startCorba
             /etc/rc1.d/K20startCorba -> ../init.d/startCorba
             /etc/rc6.d/K20startCorba -> ../init.d/startCorba
             /etc/rc2.d/S20startCorba -> ../init.d/startCorba
             /etc/rc3.d/S20startCorba -> ../init.d/startCorba
             /etc/rc4.d/S20startCorba -> ../init.d/startCorba
             /etc/rc5.d/S20startCorba -> ../init.d/startCorba
    • TODO:
      • Get rid of boot up issues (kahlua audio, etc.) that are relics from installing on workstation

  2. Moving the harddrive from a workstation to the AUV (Lippert Coorunner (II?) AMD Geode PC104)
    • Before shutdown on workstation (just prior to move), delete the ethernet address bound in the file /etc/udev/rules.d/z25_persistent-net.rules).   
      • If this file is not deleted, the eth0 interface will not come up and a message at boot "SIOCSIFADDR: no such device eth0" with no eth0 will result
      • ifup eth0 will also show the error
    • Network Settings (/etc/network/interfaces)
      • change from workstation setup to auv setup (dhcp to static and mvc-debian4 to mvc-debian for AUV)
        • edit /etc/hosts and change mvc-debian4 to mvc-debian
        • edit /etc/dhcp3/dhclient.conf to add the following line:
          • send host-name "foce2.shore.mbari.org"
        • 127.0.0.1 localhost.localdomain localhost
        • 134.89.32.16 mvc-debian.shore.mbari.org mvc-debian
        • hostname mvc-debian.shore.mbari.org
        • copy the interfaces (see attachment to this wiki) file to /etc/network
          • address 134.89.32.16
          • netmask 255.255.254.0
          • gateway 134.89.32.1
          • broadcast 134.89.32.255
        • to check the hostname is set properly
          • uname -n
          • hostname -a
          • hostname -s
          • hostname -d
          • hostname -f
          • hostname
      • For future apt-get usage - edit /etc/apt/sources.list and comment out the cdrom drive.   This will get packages by ftp from debian mirror.

  • Notes:
    • Corba
      • It might be better to pull in the omniORB4 from Debian since there are build errors and complexity associated with omniORB.    The default config file location is /etc/omniORB4.cfg.
    • Looks like the serial.conf file borrowed from debian 3.1 is not setting up the serial ports correctly - not sure if this was ever tested (likely not).   Resolution:  Need to rebuild the linux kernel to enable standard serial, etc.   Instructions added above
    • Tar up the built prj directory for transfer to another hard disk:
      • tar -pczf auv-prj-built.tar.gz prj
    • Debian Packages required to build auv-linux and TREX:
      1. apt-get install ant
      2. apt-get install ant-optional
      3. apt-get install autoconf
      4. apt-get install autogen
      5. apt-get install automake
      6. apt-get install binutils
      7. apt-get install bison
      8. apt-get install cvs
      9. apt-get install doxygen
      10. apt-get install flex
      11. apt-get install g++
      12. apt-get install libtool
      13. apt-get install make
      14. apt-get install subversion
      15. apt-get install libtool
      16. apt-get install gdb
      17. apt-get install openssl
      18. apt-get install ssh
      19. apt-get install minicom
      20. apt-get install python-all
      21. apt-get install python-all-dev
      22. apt-get install lirc setserial
      23. apt-get install linux-source-2.6.18
      24. apt-get install kernel-package libncurses5-dev fakeroot wget build-essential
      25. apt-get install xutils-dev
      26. apt-get install linux-doc-2.6.18
      27. apt-get install linux-manual-2.6.18
      28. apt-get install manpages-dev
      29. apt-get install xutils-dev
      30. apt-get install jam
      31. apt-get install swig
      32. apt-get install libboost-regex-dev 
Document generated by Confluence on Feb 04, 2026 08:05